package cn.qiyu5522.config;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.node.ObjectNode;

import java.io.IOException;

/**
 * ClassName: NullObjectToEmptyObjectSerializer
 * Package: cn.qiyu5522.config
 * 使用方法： @JsonSerialize(nullsUsing = NullObjectToEmptyObjectSerializer.class)
 * 效果： null对象会被转换为空对象 {}
 * 注意：
 * 1. 请务必使用nullsUsing 表示仅当值为null时， 才会进入本类 serialize 方法
 * 2. 请勿用在数组类对象上， 因为数组类的空对象应以 [] 表示，而非 {}
 * @Author: Tonkey
 * @Create：2024/4/22-16:30
 * @Version: v1.0
 */

public class NullObjectToEmptyObjectSerializer extends JsonSerializer<Object> {
    @Override
    public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        //创建空对象节点 效果为{}
        ObjectNode objectNode = objectMapper.createObjectNode();
        //如果处理的字段为数组，则需要创建数组节点 []
        //ArrayNode arrayNode = objectMapper.createArrayNode();
        gen.writeObject(objectNode);
    }
}
